package array;

import java.util.HashSet;

/**
 * @Author wangtengyu
 * @Date 2019/9/21 6:14 PM
 * @Description 回文数相关题目  回文数 正着倒着读都一样
 */
public class HuiWen {



  public static void main(String args[]){
    HuiWen huiWen=new HuiWen();
    System.out.println(huiWen.longestPalindrome("1234567"));
    System.out.println(huiWen.isPalindrome("abccbA"));
  }


  /**
   * 给定一个字符串，给出他能组成的最大回文数的长度  一个字母 空字符串 也算回文数
   * @param s
   * @return
   */
  public  int longestPalindrome(String s) {
    if (s.length() == 0)
      return 0;
    // 用于存放字符
    HashSet<Character> hashset = new HashSet<Character>();
    char[] chars = s.toCharArray();
    int count = 0;
    for (int i = 0; i < chars.length; i++) {
      if (!hashset.contains(chars[i])) {// 如果hashset没有该字符就保存进去
        hashset.add(chars[i]);
      } else {// 如果有,就让count++（说明找到了一个成对的字符），然后把该字符移除
        hashset.remove(chars[i]);
        count++;
      }
    }
    return hashset.isEmpty() ? count * 2 : count * 2 + 1;
  }


  /**
   * 判断是否回文数
   * @param s
   * @return
   */
  public boolean isPalindrome(String s){
    boolean flag=true;
    if (s.length()==0){
      return flag;
    }
    int i=0;
    int j=s.length()-1;
    while (i<=j){
      if (Character.toLowerCase(s.charAt(i))==Character.toLowerCase(s.charAt(j))){
        i++;
        j--;
      }else{
        flag=false;
        break;
      }
    }
    return flag;
  }

}
